package gui.GLListeners.GLReceptaculos;

import figuras.BSplines;
import figuras.malla.MallaPorSplineYRevolucion;
import gui.GLListeners.GLListenerCurvas;

import java.awt.Color;

import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;

import transformaciones.TAfin;

import componentes.flor.Receptaculo;

public class GLListenerReceptaculo extends GLListenerCurvas{

	protected MallaPorSplineYRevolucion malla;
	//private Receptaculo receptaculo;
	protected Color color;
	protected GLAutoDrawable glDrawable;

	public GLListenerReceptaculo() {
		super();
		malla = null;
		componente=null;
		setColor(Color.green);
	}

	/***************************************************************************
	 * The display event *
	 * ****************************************************************** 
	 * Here, we place all the code related to the drawing of the scene. 
	 * This method is called by the drawing loop (the display method) 
	 **************************************************************************/
	public void display(GLAutoDrawable glDrawable) {
		this.glDrawable=glDrawable;
		super.display(glDrawable);
		
		if (malla == null) {
			gl.glPointSize(3.0f);
			for (int i = 0; i < manejadorSplines.getPuntosIntroducidos().size(); i++) {
				gl.glBegin(GL.GL_POINTS);
				gl.glVertex2d(manejadorSplines.getPuntosIntroducidos().get(i)
						.getX(), manejadorSplines.getPuntosIntroducidos()
						.get(i).getY());
				gl.glEnd();
			}

			for (BSplines b : manejadorSplines.getBsplines())
				b.pintaConLineas(gl);
				//b.pintaConPuntos(gl);
		}
		if (componente != null) {
			if (rota) {
				TAfin matriz = new TAfin(gl);
				matriz.setMatriz(matrix);
				componente.setMatriz(matriz);
			}
				componente.dibuja(glOption);
				//componente.dibuja(GL.GL_POLYGON);
				//componente.dibuja(GL.GL_LINE_LOOP);
		}
		
		processEvents(glDrawable);
	}

	public void setColor(Color color) {
		this.color = color;
		if(componente!=null) componente.setColor(color);
	}
	
	public void limpiaCurvas() {
		super.limpiaCurvas();
		malla = null;
		//receptaculo=null;
		componente=null;
	}
	
	public void setTexture(){
		((Receptaculo)componente).setTexture(texture);
	}
	
//	public void revolucion() {}
//	public void guardaReceptaculo(File file){}

}
